{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\".\\\\第二节.jpg\" alt=\"some_text\">\n",
    "<h1> 第二讲 程序设计基础</h1>\n",
    "<a id=backup></a>\n",
    "<H2>目录</H2>  \n",
    "\n",
    "[2.1 程序执行过程](#Section1)  \n",
    "[2.2 程序实例](#Section2)  \n",
    "[2.3 程序的基本结构](#Section3)     \n",
    "[2.4 顺序结构](#Section4)  \n",
    "[2.5 分支结构](#Section5)  \n",
    "[2.6 循环结构](#Section6) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 1.判断模块是否存在"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "matplotlib              3.10.0\n",
      "matplotlib-inline       0.1.7\n"
     ]
    }
   ],
   "source": [
    "a=!pip list\n",
    "#print(a)\n",
    "flag=False\n",
    "for i in a:\n",
    "    if 'matplot' in i:\n",
    "        print(i)\n",
    "        flag=True\n",
    "if flag==False:\n",
    "    print('未找到matplotlib...')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 2.改动matplotlib图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x20db70f2390>,\n",
       " <matplotlib.lines.Line2D at 0x20db70f2210>]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "x = np.linspace(0,4*np.pi)\n",
    "plt.plot(x,np.sin(x+np.pi/2),x,np.cos(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 3.安装graphviz，并绘制流程图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: graphviz in c:\\users\\86184\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (0.20.3)\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install graphviz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 12.2.1 (20241206.2353)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"498pt\" height=\"676pt\"\n",
       " viewBox=\"0.00 0.00 498.32 675.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 671.5)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-671.5 494.32,-671.5 494.32,4 -4,4\"/>\n",
       "<!-- 1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>1</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"349.66\" cy=\"-649.5\" rx=\"32.12\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-643.33\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">开始</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"466.22,-594.5 280.8,-594.5 233.1,-558.5 418.52,-558.5 466.22,-594.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-571.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">请输入成绩=?</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M349.66,-631.31C349.66,-623.73 349.66,-614.6 349.66,-606.04\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"353.16,-606.04 349.66,-596.04 346.16,-606.04 353.16,-606.04\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"349.66,-521.5 209,-503.5 349.66,-485.5 490.32,-503.5 349.66,-521.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.66\" y=\"-498.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于90?</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M349.66,-558.31C349.66,-550.73 349.66,-541.6 349.66,-533.04\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"353.16,-533.04 349.66,-523.04 346.16,-533.04 353.16,-533.04\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"264.66,-433 124,-415 264.66,-397 405.32,-415 264.66,-433\"/>\n",
       "<text text-anchor=\"middle\" x=\"264.66\" y=\"-409.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于80?</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M334.46,-487.04C321.41,-473.75 302.39,-454.4 287.51,-439.25\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"290.29,-437.09 280.79,-432.41 285.3,-442 290.29,-437.09\"/>\n",
       "<text text-anchor=\"middle\" x=\"323.02\" y=\"-454.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- a -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>a</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"433.66\" cy=\"-361\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"433.66\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print A</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;a -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>3&#45;&gt;a</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M367.97,-487.5C382.65,-474.54 402.71,-454.52 414.66,-433 421.94,-419.88 426.54,-403.84 429.39,-390.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"432.78,-391.2 431.18,-380.72 425.9,-389.91 432.78,-391.2\"/>\n",
       "<text text-anchor=\"middle\" x=\"412.46\" y=\"-454.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"201.66,-325 61,-307 201.66,-289 342.32,-307 201.66,-325\"/>\n",
       "<text text-anchor=\"middle\" x=\"201.66\" y=\"-301.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于70?</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>4&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.09,-397.9C245.01,-380.94 228.97,-353.95 217.1,-333.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"220.21,-332.36 212.09,-325.55 214.19,-335.94 220.21,-332.36\"/>\n",
       "<text text-anchor=\"middle\" x=\"250.73\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- b -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>b</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"372.66\" cy=\"-253\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"372.66\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print B</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;b -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>4&#45;&gt;b</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.07,-399.02C303.81,-382.81 333.94,-355.19 351.66,-325 359.31,-311.97 364.36,-295.93 367.59,-282.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"370.98,-283.28 369.66,-272.77 364.14,-281.81 370.98,-283.28\"/>\n",
       "<text text-anchor=\"middle\" x=\"349.64\" y=\"-355.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"140.66,-217 0,-199 140.66,-181 281.32,-199 140.66,-217\"/>\n",
       "<text text-anchor=\"middle\" x=\"140.66\" y=\"-193.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x是否大于等于60?</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M192.4,-289.9C182.63,-272.94 167.1,-245.95 155.61,-225.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"158.79,-224.48 150.77,-217.56 152.72,-227.98 158.79,-224.48\"/>\n",
       "<text text-anchor=\"middle\" x=\"188.44\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- c -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>c</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"309.66\" cy=\"-145\" rx=\"37.53\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"309.66\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print C</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;c -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>5&#45;&gt;c</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M221.69,-291.21C242.02,-275.16 272.96,-247.66 290.66,-217 298.16,-204.01 302.78,-187.97 305.58,-174.43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"308.98,-175.27 307.33,-164.8 302.1,-174.02 308.98,-175.27\"/>\n",
       "<text text-anchor=\"middle\" x=\"288.56\" y=\"-247.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- d -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>d</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"147.66\" cy=\"-91\" rx=\"38.04\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"147.66\" y=\"-85.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print D</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;d -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>6&#45;&gt;d</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M141.78,-180.97C142.85,-164.76 144.49,-140.06 145.76,-120.79\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"149.25,-121.06 146.41,-110.85 142.26,-120.6 149.25,-121.06\"/>\n",
       "<text text-anchor=\"middle\" x=\"155.32\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Yes</text>\n",
       "</g>\n",
       "<!-- e -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>e</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243.66\" cy=\"-91\" rx=\"37.02\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243.66\" y=\"-85.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print E</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;e -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>6&#45;&gt;e</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M155.42,-182.81C172.36,-165.38 200.36,-136.56 220.27,-116.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"222.74,-118.55 227.2,-108.94 217.72,-113.67 222.74,-118.55\"/>\n",
       "<text text-anchor=\"middle\" x=\"215.65\" y=\"-139.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">No</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>7</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"309.66\" cy=\"-18\" rx=\"32.12\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"309.66\" y=\"-11.82\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">结束</text>\n",
       "</g>\n",
       "<!-- a&#45;&gt;7 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>a&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M432.35,-342.75C430.86,-321.79 428.66,-285.32 428.66,-254 428.66,-254 428.66,-254 428.66,-90 428.66,-53.15 386.05,-34.98 351.83,-26.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"352.62,-22.92 342.09,-24.08 351.05,-29.74 352.62,-22.92\"/>\n",
       "</g>\n",
       "<!-- b&#45;&gt;7 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>b&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M371.33,-234.75C369.17,-210.39 364.04,-164.67 353.66,-127 345.83,-98.58 332.67,-67.55 322.78,-46.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"326.01,-44.71 318.59,-37.14 319.67,-47.68 326.01,-44.71\"/>\n",
       "</g>\n",
       "<!-- c&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>c&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M309.66,-126.62C309.66,-106.19 309.66,-71.99 309.66,-47.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"313.16,-47.75 309.66,-37.75 306.16,-47.75 313.16,-47.75\"/>\n",
       "</g>\n",
       "<!-- d&#45;&gt;7 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>d&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M174.77,-78.12C202.13,-66.13 244.49,-47.56 274.43,-34.44\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"275.71,-37.7 283.46,-30.48 272.9,-31.29 275.71,-37.7\"/>\n",
       "</g>\n",
       "<!-- e&#45;&gt;7 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>e&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M258.31,-74.24C266.97,-64.92 278.11,-52.94 287.8,-42.52\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"290.23,-45.04 294.48,-35.33 285.1,-40.28 290.23,-45.04\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x20db71461b0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "dot = Digraph()\n",
    "dot.node('1','开始')\n",
    "dot.node('2','请输入成绩=?',shape='parallelogram')\n",
    "dot.node('3','x是否大于等于90?',shape='diamond')\n",
    "dot.node('4','x是否大于等于80?',shape='diamond')\n",
    "dot.node('5','x是否大于等于70?',shape='diamond')\n",
    "dot.node('6','x是否大于等于60?',shape='diamond')\n",
    "dot.node('a','Print A')\n",
    "dot.node('b','Print B')\n",
    "dot.node('c','Print C')\n",
    "dot.node('d','Print D')\n",
    "dot.node('e','Print E')\n",
    "dot.node('7','结束')\n",
    "dot.edges(['12','23','a7','b7','c7','d7','e7'])\n",
    "dot.edge('3','a',label='Yes')\n",
    "dot.edge('3','4',label='No')\n",
    "dot.edge('4','b',label='Yes')\n",
    "dot.edge('4','5',label='No')\n",
    "dot.edge('5','c',label='Yes')\n",
    "dot.edge('5','6',label='No')\n",
    "dot.edge('6','d',label='Yes')\n",
    "dot.edge('6','e',label='No')\n",
    "\n",
    "dot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 4.  3个绘制图形的程序"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## (1)绘制树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      *\n",
      "     ***\n",
      "    *****\n",
      "   *******\n",
      "  *********\n",
      " ***********\n",
      "*************\n",
      "  **\n",
      "  **\n"
     ]
    }
   ],
   "source": [
    "def print_tree(height):\n",
    "    # 绘制树冠部分\n",
    "    for i in range(height):\n",
    "        # 每一行先打印空格，使星号居中\n",
    "        print(' ' * (height - i - 1) + '*' * (2 * i + 1))\n",
    "    \n",
    "    # 绘制树干部分\n",
    "    trunk_width = height // 3\n",
    "    trunk_height = height // 3\n",
    "    trunk_space = (height - trunk_width) // 2\n",
    "    \n",
    "    for i in range(trunk_height):\n",
    "        print(' ' * trunk_space + '*' * trunk_width)\n",
    "\n",
    "# 调用函数并设置树的高度\n",
    "print_tree(7)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## (2)用字符绘制sin函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                        *                                       \n",
      "                                                    *                           \n",
      "                                                               *                \n",
      "                                                                        *       \n",
      "                                                                              * \n",
      "                                                                                \n",
      "                                                                              * \n",
      "                                                                        *       \n",
      "                                                               *                \n",
      "                                                    *                           \n",
      "                                        *                                       \n",
      "                           *                                                    \n",
      "                *                                                               \n",
      "       *                                                                        \n",
      " *                                                                              \n",
      "*                                                                               \n",
      " *                                                                              \n",
      "       *                                                                        \n",
      "                *                                                               \n",
      "                           *                                                    \n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "def draw_sin_wave(width, height):\n",
    "    for y in range(height):\n",
    "        sin_value = math.sin(2 * math.pi * y / height)\n",
    "        offset = int((sin_value + 1) * (width // 2))\n",
    "        for x in range(width):\n",
    "            if x == offset:\n",
    "                print('*', end='')\n",
    "            else:\n",
    "                print(' ', end='')\n",
    "        print()\n",
    "width = 80\n",
    "height = 20\n",
    "draw_sin_wave(width, height)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## (3)用字符绘制杨辉三角形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                               1\n",
      "                                              1 1\n",
      "                                             1 2 1\n",
      "                                            1 3 3 1\n",
      "                                           1 4 6 4 1\n",
      "                                         1 5 10 10 5 1\n",
      "                                       1 6 15 20 15 6 1\n",
      "                                      1 7 21 35 35 21 7 1\n",
      "                                    1 8 28 56 70 56 28 8 1\n",
      "                                  1 9 36 84 126 126 84 36 9 1\n",
      "                              1 10 45 120 210 252 210 120 45 10 1\n",
      "                            1 11 55 165 330 462 462 330 165 55 11 1\n",
      "                          1 12 66 220 495 792 924 792 495 220 66 12 1\n",
      "                      1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1\n",
      "                  1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1\n",
      "               1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1\n",
      "           1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1\n",
      "       1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1\n",
      "    1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1\n",
      "1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1\n"
     ]
    }
   ],
   "source": [
    "def generate_pascals_triangle(n):\n",
    "    triangle = []\n",
    "    row = [1]\n",
    "    triangle.append(row)\n",
    "    for i in range(1, n):\n",
    "        prev_row = triangle[-1]\n",
    "        current_row = [1]\n",
    "        for j in range(1, i):\n",
    "            current_row.append(prev_row[j - 1] + prev_row[j])\n",
    "        current_row.append(1)\n",
    "        triangle.append(current_row)\n",
    "\n",
    "    return triangle\n",
    "\n",
    "def print_pascals_triangle(triangle):\n",
    "    max_width = len(\" \".join(map(str, triangle[-1])))\n",
    "    for row in triangle:\n",
    "        print(\" \" * ((max_width - len(\" \".join(map(str, row)))) // 2) + \" \".join(map(str, row)))\n",
    "\n",
    "num_rows = 20\n",
    "\n",
    "pascals_triangle = generate_pascals_triangle(num_rows)\n",
    "\n",
    "print_pascals_triangle(pascals_triangle)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 2.1 程序执行过程\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x20db7202cc0>,\n",
       " <matplotlib.lines.Line2D at 0x20db7202c90>]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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n//hhx/iK1/5Cq688kps3bpVBAl027FjB7jz7rvvigvehg0b8MYbb4gT5VlnnYWurq5Rf46cM2tra43boUOHYAcWLlwYtN3/+te/RnyunT9X4qOPPgp6r/T5EhdffLEjPlfaR+nYpAvWcPz617/G73//e9x3333YuHGjuPDTcdzb2xuxY5/L++3u7hbbe/vtt4v7f/zjH2KhcsEFF0T0mOD0+RIU0ARu+1NPPTXqa3L9fMd6r4HvkW4PP/ywCFguuugiW362EYXaxBWhc+KJJw5ed911xtder3ewtLR0cO3atcM+/8tf/vLg+eefH/S9lStXDn7rW98atBsNDQ1kKTD47rvvjvicRx55ZDArK2vQbtx5552DS5cuDfn5Tvpcie9973uDM2fOHPT5fI76XAnaZ5977jnja3qPxcXFg7/5zW+M77W2tg4mJSUNPvXUUxE79rm83+HYtGmTeN6hQ4cidkxwer9f//rXBy+88MJxvY4dPt9QPlt635/73OdGfY5dPtuJojI446Cvrw+bN28W6ezAuVb09fr164f9Gfp+4PMJWhWM9HzOtLW1ifvc3NxRn9fZ2YmpU6eKYW8XXnghdu7cCTtAJQpKA8+YMQOXXXYZqqqqRnyukz5X2q//8pe/4Jvf/Oaow2ft+rkOpaKiAnV1dUGfH822oZLESJ9fOMc+92OZPuvs7OyIHRPcWLdunSitz507F9deey2amppGfK5TPt/6+nq8/PLLIrM8Fnb+bENFBTjjoLGxEV6vF0VFRUHfp6/phDkc9P3xPJ/zBPYbbrgBp5xyChYtWjTi8+hkQinSF154QVw06edOPvlkHD58GJyhixvpTF599VXce++94iL4mc98RkytdfLnSlBNv7W1VegWnPa5Dof8jMbz+YVz7HOFynCkyaES62iDGMd7THCCylOPP/443nrrLfzqV78S5fZzzz1XfIZO/nwfe+wxoZn84he/OOrz7PzZjoeYnCauGD+kxSF9yVh12lWrVombhC6C8+fPx/3334+f/vSn4Aqd/CRLliwRJwDKVjz77LMhrYbszEMPPSTeP63mnPa5KoIhHd2Xv/xlIbKmC5tTj4lLL73UeEziatr+mTNniqzOmWeeCadCixDKxozVAHCujT/b8aAyOOMgPz8f8fHxIg0YCH1dXFw87M/Q98fzfI5cf/31eOmll/DOO+9g8uTJ4/rZxMREHHfccSgvL4edoNT9nDlzRtxuJ3yuBAmF33zzTVx11VUx8bkS8jMaz+cXzrHPNbihz5xE5aNlb8I5JjhDZRj6DEfadid8vu+//74Qj4/3WLb7ZzsaKsAZB263G8uXLxdpTwml6unrwNVtIPT9wOcTdHIZ6fmcoFUeBTfPPfcc3n77bUyfPn3cr0Fp3+3bt4t2XDtBepMDBw6MuN12/lwDeeSRR4RO4fzzz4+Jz5Wg/ZguWoGfX3t7u+imGunzC+fY5xjckO6CAtq8vLyIHxOcoVIqaXBG2na7f74yE0vvgTquYumzHRWrVc524+mnnxbdFo8++ujgrl27Bq+55prB7Ozswbq6OvH/X/va1wZvvfVW4/kffPDBYEJCwuBvf/vbwd27dwv1emJi4uD27dsHuXPttdeKzpl169YN1tbWGrfu7m7jOUPf709+8pPB1157bfDAgQODmzdvHrz00ksHk5OTB3fu3DnImR/84AfifVZUVIjPbPXq1YP5+fmic8xpn2tgl8iUKVMGb7nllmP+z+6fa0dHx+DWrVvFjU5zd999t3gsu4Z++ctfiuP2hRdeGPz0009F58n06dMHe3p6jNegTpQ//OEPIR/7XN9vX1/f4AUXXDA4efLkwW3btgUdyx6PZ8T3O9YxwfX90v/913/91+D69evFtr/55puDxx9//ODs2bMHe3t7bff5jrUvE21tbYOpqamD995777Cv8TkbfbaRRAU4YUA7Cl0Y3G63aC3csGGD8X+nn366aFEM5Nlnnx2cM2eOeP7ChQsHX3755UE7QAfTcDdqGR7p/d5www3G36aoqGjwvPPOG9yyZcsgdy655JLBkpISsd2TJk0SX5eXlzvyc5VQwEKf5969e4/5P7t/ru+8886w+658T9Qqfvvtt4v3Qhe1M88885i/w9SpU0XgGuqxz/X90kVspGOZfm6k9zvWMcH1/dIC7KyzzhosKCgQiw56X1dfffUxgYpdPt+x9mXi/vvvH0xJSRF2B8Mx1UafbSSJo39Gz/EoFAqFQqFQ2AulwVEoFAqFQuE4VICjUCgUCoXCcagAR6FQKBQKheNQAY5CoVAoFArHoQIchUKhUCgUjkMFOAqFQqFQKByHCnAUCoVCoVA4DhXgKBQKhUKhcBwqwFEoFAqFQuE4VICjUCgUCoXCcagAR6FQKBQKheNQAY5CoVAoFAo4jf8fQ0U6sXGAbuEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "x = np.linspace(0,6*np.pi)\n",
    "plt.plot(x,np.sin(x),x,np.cos(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 程序设计语言：机器语言、汇编语言、高级语言\n",
    "## 编译和解释\n",
    "编译：fortran C C++ C#\n",
    "解释：basic JavaScript PHP \n",
    "Python？？？\n",
    "Python语言执行的几种方式：\n",
    "\n",
    "分析程序执行过程-IPO：  \n",
    "a. Input模块：  \n",
    "b. Process模块：  \n",
    "c. Output模块：  \n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section2> </a>\n",
    "## 2.2 程序实例\n",
    "\n",
    "<p><a href=\"https://yanghailin.blog.csdn.net/article/details/81126087?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link\">\n",
    "this is example of python</a></p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24\n",
      "['123', '124', '132', '134', '142', '143', '213', '214', '231', '234', '241', '243', '312', '314', '321', '324', '341', '342', '412', '413', '421', '423', '431', '432']\n"
     ]
    }
   ],
   "source": [
    "\"\"\"\n",
    "Created on Thu Jul 19 19:51:08 2018\n",
    "有四个数字：1、2、3、4，能组成多少个互不相同且无重复数字的三位数？各是多少？\n",
    "@author: yhl\n",
    "\"\"\"\n",
    " \n",
    "L=[]\n",
    "a=[1,2,3,4]\n",
    " \n",
    "#for i in range(len(a)):\n",
    " \n",
    "for val_1 in a:   #   for(i=1;i<n;I++)\n",
    "    for val_2 in a:\n",
    "        for val_3 in a:\n",
    "            if(val_1 == val_2 or val_1 == val_3 or val_2 == val_3):\n",
    "                continue;\n",
    "            else:\n",
    "                L.append(str(val_1)+str(val_2)+str(val_3))\n",
    " \n",
    " \n",
    "print(len(L)) \n",
    "print (L)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3 n= 1\n",
      "1 2 4 n= 2\n",
      "1 3 2 n= 3\n",
      "1 3 4 n= 4\n",
      "1 4 2 n= 5\n",
      "1 4 3 n= 6\n",
      "2 1 3 n= 7\n",
      "2 1 4 n= 8\n",
      "2 3 1 n= 9\n",
      "2 3 4 n= 10\n",
      "2 4 1 n= 11\n",
      "2 4 3 n= 12\n",
      "3 1 2 n= 13\n",
      "3 1 4 n= 14\n",
      "3 2 1 n= 15\n",
      "3 2 4 n= 16\n",
      "3 4 1 n= 17\n",
      "3 4 2 n= 18\n",
      "4 1 2 n= 19\n",
      "4 1 3 n= 20\n",
      "4 2 1 n= 21\n",
      "4 2 3 n= 22\n",
      "4 3 1 n= 23\n",
      "4 3 2 n= 24\n"
     ]
    }
   ],
   "source": [
    "n=0\n",
    "for i in range(1,5):\n",
    "    for j in range(1,5):\n",
    "        for k in range(1,5):\n",
    "            if( i != k ) and (i != j) and (j != k):\n",
    "                n=n+1\n",
    "                print (i,j,k,\"n=\",n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "profit= 1.375\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "企业发放的奖金根据利润提成。\n",
    "利润(I)低于或等于10万元时，奖金可提10%；\n",
    "利润高于10万元，低于20万元时，低于10万元的部分\n",
    "按10%提成，高于10万元的部分，可提成7.5%；\n",
    "20万到40万之间时，高于20万元的部分，可提成5%；\n",
    "40万到60万之间时高于40万元的部分，可提成3%；\n",
    "60万到100万之间时，高于60万元的部分，可提成1.5%;\n",
    "高于100万元时,超过100万元的部分按1%提成。\n",
    "从键盘输入当月利润I，求应发放奖金总数？\n",
    "'''\n",
    " \n",
    "profit = 0\n",
    "I = int(input(\"please input: \"))\n",
    "if(I<=10):\n",
    "    profit = 0.1 * I\n",
    "elif(I <= 20):\n",
    "    profit = 10 *0.1 + (I - 10)*0.075\n",
    "elif(I <=40):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (I - 20)*0.05\n",
    "elif(I <= 60):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (I - 40)*0.03\n",
    "elif(I <= 100):\n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (60 - 40)*0.03 + (I - 60)*0.015\n",
    "else : \n",
    "    profit = 10 * 0.1 + (20 - 10)*0.075 + (40 - 20)*0.05 + (60 - 40)*0.03 + (100 - 60)*0.015 + (I -100)*0.01\n",
    "    \n",
    "print (\"profit=\",profit)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.0\n",
      "profit= 5.0\n"
     ]
    }
   ],
   "source": [
    "i = int(input('净利润:'))\n",
    "arr = [1000000,600000,400000,200000,100000,0]\n",
    "rat = [0.01,0.015,0.03,0.05,0.075,0.1]\n",
    "r = 0\n",
    "for idx in range(0,6):\n",
    "    if i>arr[idx]:\n",
    "        r+=(i-arr[idx])*rat[idx]#r=r+nnn\n",
    "        print((i-arr[idx])*rat[idx])\n",
    "        i=arr[idx]\n",
    "print (\"profit=\",r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Python 数字类型转换\n",
    "有时候，我们需要对数据内置的类型进行转换，数据类型的转换，你只需要将数据类型作为函数名即可。\n",
    "\n",
    "int(x) 将x转换为一个整数。\n",
    "\n",
    "float(x) 将x转换到一个浮点数。\n",
    "\n",
    "complex(x) 将x转换到一个复数，实数部分为 x，虚数部分为 0。\n",
    "\n",
    "complex(x, y) 将 x 和 y 转换到一个复数，实数部分为 x，虚数部分为 y。x 和 y 是数字表达式。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=Section3></a>\n",
    "## 2.3程序的基本结构\n",
    "结构化程序的三大基本结构：\n",
    "\n",
    "a.顺序结构  \n",
    "b.分支结构  \n",
    "c.循环结构  \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=Section4></a>\n",
    "## 2.4顺序结构\n",
    "\n",
    "### 数学函数\n",
    "<table><tr>\n",
    "<th>函数</th><th>返回值 ( 描述 )</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-abs.html\" rel=\"noopener noreferrer\">abs(x)</a></td><td>返回数字的绝对值，如abs(-10) 返回 10</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-ceil.html\" rel=\"noopener noreferrer\">ceil(x) </a></td><td>返回数字的上入整数，如math.ceil(4.1) 返回 5</td></tr>\n",
    "<tr><td><p>cmp(x, y)</p></td>\n",
    "<td>如果 x &lt; y 返回 -1, 如果 x == y 返回 0, 如果 x &gt; y 返回 1。 <strong style=\"color:red\">Python 3 已废弃，使用 (x&gt;y)-(x&lt;y) 替换</strong>。 </td>\n",
    "</tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-exp.html\" rel=\"noopener noreferrer\">exp(x) </a></td><td>返回e的x次幂(e<sup>x</sup>),如math.exp(1) 返回2.718281828459045</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-fabs.html\" rel=\"noopener noreferrer\">fabs(x)</a></td><td>返回数字的绝对值，如math.fabs(-10) 返回10.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-floor.html\" rel=\"noopener noreferrer\">floor(x) </a></td><td>返回数字的下舍整数，如math.floor(4.9)返回 4</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-log.html\" rel=\"noopener noreferrer\">log(x) </a></td><td>如math.log(math.e)返回1.0,math.log(100,10)返回2.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-log10.html\" rel=\"noopener noreferrer\">log10(x) </a></td><td>返回以10为基数的x的对数，如math.log10(100)返回 2.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-max.html\" rel=\"noopener noreferrer\">max(x1, x2,...) </a></td><td>返回给定参数的最大值，参数可以为序列。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-min.html\" rel=\"noopener noreferrer\">min(x1, x2,...) </a></td><td>返回给定参数的最小值，参数可以为序列。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-modf.html\" rel=\"noopener noreferrer\">modf(x) </a></td><td>返回x的整数部分与小数部分，两部分的数值符号与x相同，整数部分以浮点型表示。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-pow.html\" rel=\"noopener noreferrer\">pow(x, y)</a></td><td> x**y 运算后的值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-round.html\" rel=\"noopener noreferrer\">round(x [,n])</a></td><td><p>返回浮点数 x 的四舍五入值，如给出 n 值，则代表舍入到小数点后的位数。</p>\n",
    "<p><strong>其实准确的说是保留值将保留到离上一位更近的一端。</strong></p>\n",
    "</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-sqrt.html\" rel=\"noopener noreferrer\">sqrt(x) </a></td><td>返回数字x的平方根。</td></tr>\n",
    "</table>\n",
    "\n",
    "### 随机数函数\n",
    "随机数可以用于数学，游戏，安全等领域中，还经常被嵌入到算法中，用以提高算法效率，并提高程序的安全性。\n",
    "\n",
    "Python包含以下常用随机数函数：\n",
    "\n",
    "<table><tr>\n",
    "<th>函数</th><th>描述</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-choice.html\" rel=\"noopener noreferrer\">choice(seq)</a></td><td>从序列的元素中随机挑选一个元素，比如random.choice(range(10))，从0到9中随机挑选一个整数。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-randrange.html\" rel=\"noopener noreferrer\">randrange ([start,] stop [,step]) </a></td><td>从指定范围内，按指定基数递增的集合中获取一个随机数，基数默认值为 1</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-random.html\" rel=\"noopener noreferrer\">random() </a></td><td> 随机生成下一个实数，它在[0,1)范围内。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-seed.html\" rel=\"noopener noreferrer\">seed([x]) </a></td><td>改变随机数生成器的种子seed。如果你不了解其原理，你不必特别去设定seed，Python会帮你选择seed。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-shuffle.html\" rel=\"noopener noreferrer\">shuffle(lst) </a></td><td>将序列的所有元素随机排序</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-uniform.html\" rel=\"noopener noreferrer\">uniform(x, y)</a></td><td>随机生成下一个实数，它在[x,y]范围内。</td></tr>\n",
    "</table>\n",
    "\n",
    "### 三角函数\n",
    "Python包括以下三角函数：\n",
    "<table><tr>\n",
    "<th>函数</th><th>描述</th></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-acos.html\" rel=\"noopener noreferrer\">acos(x)</a></td><td>返回x的反余弦弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-asin.html\" rel=\"noopener noreferrer\">asin(x)</a></td><td>返回x的反正弦弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-atan.html\" rel=\"noopener noreferrer\">atan(x)</a></td><td>返回x的反正切弧度值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-atan2.html\" rel=\"noopener noreferrer\">atan2(y, x)</a></td><td>返回给定的 X 及 Y 坐标值的反正切值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-cos.html\" rel=\"noopener noreferrer\">cos(x)</a></td><td>返回x的弧度的余弦值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-hypot.html\" rel=\"noopener noreferrer\">hypot(x, y)</a></td><td>返回欧几里德范数 sqrt(x*x + y*y)。 </td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-sin.html\" rel=\"noopener noreferrer\">sin(x)</a></td><td>返回的x弧度的正弦值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-tan.html\" rel=\"noopener noreferrer\">tan(x)</a></td><td>返回x弧度的正切值。</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-degrees.html\" rel=\"noopener noreferrer\">degrees(x)</a></td><td>将弧度转换为角度,如degrees(math.pi/2) ，  返回90.0</td></tr>\n",
    "<tr><td><a target=\"_blank\" href=\"/python3/python3-func-number-radians.html\" rel=\"noopener noreferrer\">radians(x)</a></td><td>将角度转换为弧度</td></tr>\n",
    "</table>\n",
    "\n",
    "### 数学常量\n",
    "\n",
    "<table><tr>\n",
    "<th>常量</th><th>描述</th></tr>\n",
    "<tr><td>pi</td><td>数学常量 pi（圆周率，一般以π来表示）</td></tr>\n",
    "<tr><td>e</td><td>数学常量 e，e即自然常数（自然常数）。</td></tr>\n",
    "</table>\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 12.2.1 (20241206.2353)\n",
       " -->\n",
       "<!-- Title: 顺序结构 Pages: 1 -->\n",
       "<svg width=\"214pt\" height=\"476pt\"\n",
       " viewBox=\"0.00 0.00 214.11 476.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 472)\">\n",
       "<title>顺序结构</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-472 210.11,-472 210.11,4 -4,4\"/>\n",
       "<!-- 1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>1</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"130.06,-468 76.06,-468 76.06,-432 130.06,-432 130.06,-468\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-444.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Start</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"206.11,-396 42.17,-396 0,-360 163.94,-360 206.11,-396\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-372.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">input Radius =?</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-431.7C103.06,-424.41 103.06,-415.73 103.06,-407.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-407.62 103.06,-397.62 99.56,-407.62 106.56,-407.62\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"144.81,-324 61.31,-324 61.31,-288 144.81,-288 144.81,-324\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-300.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Print Radius</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-359.7C103.06,-352.41 103.06,-343.73 103.06,-335.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-335.62 103.06,-325.62 99.56,-335.62 106.56,-335.62\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"154.93,-252 51.18,-252 51.18,-216 154.93,-216 154.93,-252\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-228.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Caculating Area</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-287.7C103.06,-280.41 103.06,-271.73 103.06,-263.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-263.62 103.06,-253.62 99.56,-263.62 106.56,-263.62\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"168.43,-180 37.68,-180 37.68,-144 168.43,-144 168.43,-180\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-156.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Caculating perimeter</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>4&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-215.7C103.06,-208.41 103.06,-199.73 103.06,-191.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-191.62 103.06,-181.62 99.56,-191.62 106.56,-191.62\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"130.06,-108 76.06,-108 76.06,-72 130.06,-72 130.06,-108\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-84.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">print</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-143.7C103.06,-136.41 103.06,-127.73 103.06,-119.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-119.62 103.06,-109.62 99.56,-119.62 106.56,-119.62\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>7</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"130.06,-36 76.06,-36 76.06,0 130.06,0 130.06,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"103.06\" y=\"-12.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">end</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;7 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>6&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M103.06,-71.7C103.06,-64.41 103.06,-55.73 103.06,-47.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.56,-47.62 103.06,-37.62 99.56,-47.62 106.56,-47.62\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x20db715fe30>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import graphviz\n",
    "dot=graphviz.Digraph(comment='the round table',name=\"顺序结构\",node_attr={'shape': 'box'})\n",
    "dot.node('1','Start')\n",
    "dot.node('2','input Radius =?',shape='parallelogram')\n",
    "dot.node('3','Print Radius')\n",
    "dot.node('4','Caculating Area')\n",
    "dot.node('5','Caculating perimeter')\n",
    "dot.node('6','print')\n",
    "dot.node('7','end')\n",
    "dot.edges(['12','23','34','45','56','67'])\n",
    "dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ridus= 66\n",
      "面积和周长: 13684.374 414.678\n"
     ]
    }
   ],
   "source": [
    "''' \n",
    "计算圆周长\n",
    "'''\n",
    "Radius = eval(input(\"请输入圆半径:\"))\n",
    "print(\"Ridus=\",Radius)\n",
    "Area = 3.1415*Radius*Radius\n",
    "perimeter  = 2*3.1415*Radius \n",
    "print(\"面积和周长:\",Area,perimeter)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=section4></a>\n",
    "## 2.5分支结构\n",
    "### 2.5.1 Python比较运算符\n",
    "\n",
    "以下假设变量a为10，变量b为20：\n",
    "<table><tr>\n",
    "<th width=\"10%\">运算符</th><th>描述</th><th>实例</th>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>==</td><td> 等于 - 比较对象是否相等</td><td> (a == b) 返回 False。 </td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>!=</td><td> 不等于 - 比较两个对象是否不相等</td><td> (a != b) 返回 True。 </td>\n",
    "</tr>\n",
    "\n",
    "<tr>\n",
    "<td>&gt;</td><td> 大于 - 返回x是否大于y</td><td> (a &gt; b) 返回 False。</td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&lt;</td><td> 小于 - 返回x是否小于y。所有比较运算符返回1表示真，返回0表示假。这分别与特殊的变量True和False等价。注意，这些变量名的大写。</td><td> (a &lt; b) 返回 True。 </td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&gt;=</td><td> 大于等于 - 返回x是否大于等于y。</td><td> (a &gt;= b) 返回 False。</td>\n",
    "\n",
    "</tr>\n",
    "<tr>\n",
    "<td>&lt;=</td><td> 小于等于 - 返回x是否小于等于y。</td><td> (a &lt;= b) 返回 True。 </td>\n",
    "</tr>\n",
    "</table>\n",
    "\n",
    "### 2.5.2 Python逻辑运算符        \n",
    "Python语言支持逻辑运算符，以下假设变量 a 为 10, b为 20:\n",
    "<table><tr>\n",
    "<th>运算符</th><th>逻辑表达式</th><th>描述</th><th>实例</th>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>and</td><td>x and y</td><td> 布尔\"与\" - 如果 x 为 False，x and y 返回 x 的值，否则返回 y 的计算值。  </td><td> (a and b) 返回 20。</td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>or</td><td>x or y</td><td>布尔\"或\" - 如果 x 是 True，它返回 x 的值，否则它返回 y 的计算值。</td><td> (a or b) 返回 10。</td>\n",
    "</tr>\n",
    "<tr><td>not</td><td>not x</td><td>布尔\"非\" - 如果 x 为 True，返回 False 。如果 x 为 False，它返回 True。</td><td> not(a and b) 返回 False </td>\n",
    "</tr>\n",
    "</table>\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5.3 条件控制语句\n",
    "Python 条件语句是通过一条或多条语句的执行结果（True 或者 False）来决定执行的代码块。\n",
    "\n",
    "可以通过下图来简单了解条件语句的执行过程:\n",
    "\n",
    "<img src=\".//img//if-condition.jpg\" width=\"250\"></img>\n",
    "\n",
    "<img src=\".//img//python-if.webp\" width=\"150\"></img>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 求绝对值。\n",
    "\n",
    "输入：x\n",
    "$$\n",
    "\\begin{align}\n",
    "&&\\left|y\\right |= \\left\\{\\begin{matrix}\n",
    "x & if \\: x\\geq 0\\\\-x& if \\:x< 0\n",
    "\\end{matrix}\\right.{\\color{Red} }\n",
    "\\end{align}\n",
    "$$\n",
    "输出：y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 12.2.0 (20241103.1931)\n",
       " -->\n",
       "<!-- Title: 分支结构 Pages: 1 -->\n",
       "<svg width=\"420pt\" height=\"404pt\"\n",
       " viewBox=\"0.00 0.00 419.60 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n",
       "<title>分支结构</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-400 415.6,-400 415.6,4 -4,4\"/>\n",
       "<!-- 1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>1</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"232.8,-396 178.8,-396 178.8,-360 232.8,-360 232.8,-396\"/>\n",
       "<text text-anchor=\"middle\" x=\"205.8\" y=\"-371.82\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">开始</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"347.88,-324 121.87,-324 63.72,-288 289.74,-288 347.88,-324\"/>\n",
       "<text text-anchor=\"middle\" x=\"205.8\" y=\"-300.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">输入Real Number =?</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.8,-359.7C205.8,-352.41 205.8,-343.73 205.8,-335.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"209.3,-335.62 205.8,-325.62 202.3,-335.62 209.3,-335.62\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"205.8,-252 0,-234 205.8,-216 411.6,-234 205.8,-252\"/>\n",
       "<text text-anchor=\"middle\" x=\"205.8\" y=\"-228.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">判断RealNumber是否大于0？</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.8,-287.7C205.8,-280.41 205.8,-271.73 205.8,-263.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"209.3,-263.62 205.8,-253.62 202.3,-263.62 209.3,-263.62\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"195.68,-180 31.93,-180 31.93,-144 195.68,-144 195.68,-180\"/>\n",
       "<text text-anchor=\"middle\" x=\"113.8\" y=\"-156.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">RealNumber=RealNumber</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M185.38,-217.46C173.69,-208.56 158.75,-197.2 145.55,-187.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"148.03,-184.65 137.96,-181.38 143.79,-190.22 148.03,-184.65\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"381.93,-180 213.68,-180 213.68,-144 381.93,-144 381.93,-180\"/>\n",
       "<text text-anchor=\"middle\" x=\"297.8\" y=\"-156.95\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">RealNumber=&#45;RealNumber</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;5 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M226.22,-217.46C237.92,-208.56 252.86,-197.2 266.05,-187.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"267.81,-190.22 273.65,-181.38 263.57,-184.65 267.81,-190.22\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"301.15,-108 149.47,-108 110.45,-72 262.13,-72 301.15,-108\"/>\n",
       "<text text-anchor=\"middle\" x=\"205.8\" y=\"-83.83\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">输出绝对值</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>4&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M136.54,-143.7C147.82,-135.11 161.63,-124.61 173.95,-115.24\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.96,-118.1 181.8,-109.26 171.72,-112.53 175.96,-118.1\"/>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M275.06,-143.7C263.78,-135.11 249.97,-124.61 237.66,-115.24\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"239.88,-112.53 229.81,-109.26 235.64,-118.1 239.88,-112.53\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>7</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"232.8,-36 178.8,-36 178.8,0 232.8,0 232.8,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"205.8\" y=\"-11.82\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">结束</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;7 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>6&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.8,-71.7C205.8,-64.41 205.8,-55.73 205.8,-47.54\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"209.3,-47.62 205.8,-37.62 202.3,-47.62 209.3,-47.62\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1b446f6d110>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from graphviz import Digraph\n",
    "dot = Digraph(comment='The Round Table - Absolute Value Flowchart', name=\"分支结构\", node_attr={'shape': 'box'})\n",
    "dot.node('1', '开始')\n",
    "dot.node('2', '输入Real Number =?', shape='parallelogram')\n",
    "dot.node('3', '判断RealNumber是否大于0？', shape='diamond')\n",
    "dot.node('4', 'RealNumber=RealNumber', shape='box') \n",
    "dot.node('5', 'RealNumber=-RealNumber', shape='box')\n",
    "dot.node('6', '输出绝对值', shape='parallelogram')\n",
    "dot.node('7', '结束')\n",
    "dot.edges([['1','2'], ['2','3'], ['3','4'], ['3','5'], ['4','6'], ['5','6'], ['6','7']])\n",
    "dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Real Number 3\n",
      "绝对值: 3\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "求绝对值。\n",
    "'''\n",
    "RealNumber = eval(input(\"输入实数:\"))\n",
    "\n",
    "if (RealNumber < 0):\n",
    "    RealNumber = -RealNumber\n",
    "print(\"绝对值:\",RealNumber)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=section6></a>\n",
    "## 2.6循环结构\n",
    "\n",
    "循环结构：\n",
    "\n",
    "while语句\n",
    "\n",
    "for语句\n",
    "\n",
    "循环分类：  \n",
    "当型循环  \n",
    "直到型循环  \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "[返回](#backup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "char1 =\"a\"\n",
    "char2=\"b\"\n",
    "char3=\"c\"\n",
    "char=char1+char2+char3\n",
    "boor1=(char[2]==char3)\n",
    "print(boor1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 整数累加：  \n",
    "输入：正整数R    \n",
    "处理：  \n",
    "S=1+2+3+…+R  \n",
    "<img src=\"./img/int_add.png\" width=\"150\">  \n",
    "输出：输出S"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "累加求和 55\n"
     ]
    }
   ],
   "source": [
    "R = eval(input(\"请输入正整数:\"))\n",
    "i, S = 0, 0\n",
    "while (i<=R):\n",
    "    S = S + i\n",
    "    i = i + 1\n",
    "print(\"累加求和\",S)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Python 提供了 for 循环和 while 循环（在 Python 中没有 do..while 循环）:\n",
    "\n",
    "<table><tr><th style=\"width:30%\">循环类型</th><th>描述</th></tr>\n",
    "<tr><td><a href=\"/python/python-while-loop.html\" title=\"Python WHILE 循环\">while 循环</a></td><td>在给定的判断条件为 true 时执行循环体，否则退出循环体。</td></tr>\n",
    "<tr><td><a href=\"/python/python-for-loop.html\" title=\" Python FOR 循环\">for 循环</a></td><td>重复执行语句</td></tr>\n",
    "<tr><td><a href=\"/python/python-nested-loops.html\" title=\"Python 循环全套\">嵌套循环</a></td><td>你可以在while循环体中嵌套for循环</td></tr>\n",
    "</table>\n",
    "\n",
    "### 循环控制语句\n",
    "循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句：\n",
    "<table><tr><th style=\"width:30%\">控制语句</th><th>描述</th></tr>\n",
    "<tr><td><a href=\"/python/python-break-statement.html\" title=\"Python break 语句\">break 语句</a></td><td>在语句块执行过程中终止循环，并且跳出整个循环</td></tr>\n",
    "<tr><td><a href=\"/python/python-continue-statement.html\" title=\"Python  语句\">continue 语句</a></td><td>在语句块执行过程中终止当前循环，跳出该次循环，执行下一次循环。</td></tr>\n",
    "<tr><td><a href=\"/python/python-pass-statement.html\" title=\"Python pass 语句\">pass 语句</a></td><td>pass是空语句，是为了保持程序结构的完整性。</td></tr>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例题 绘制数字图画\n",
    "   <img src=\".//jiqimao.jpeg\" width=\"150 \" alt=\"猫\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                                                                                              \n",
      "                                                                                                              \n",
      "                                                     .  . ....   .. ...'..                                    \n",
      "                                             .  .'_#pnrxxrrxrrxxxxrrrxrxxxrUopl'''.                           \n",
      "                                      .     uhrjxxxxrxxjrxxxxxxxxxxxxxxxrxxrrxrrxxu#].'                       \n",
      "                                      .^aXurrrxxrnxYM`.' .`Wxxrxxxxxxxxxxxxxxxxxxxrxrxxu*^..                  \n",
      "                                  .`:drrxxxxxrxxd^..       .',XxxrrrxvwbwXnxrxxxxxxxxxxxrrxYX'..              \n",
      "                               . `#nrxxxxxrxxxw^.             Zxxk,'      .'{cxxxxxxxxxxxxrxxxb^`             \n",
      "                              .`wnrrrxxxxrrxx#'.             .Wo`'          ''Mnxxxxxxxxxxrxrxrnz|`           \n",
      "                            '^krjxxnrxxm&u\".r.         u&M]  .%              . *xrxxxxxxxxxxxxxxxuQ^          \n",
      "                            vfnxx*p|'.      b         &M''M .#.     .''        axrrxxxxxxxxxxxxxxrxrW         \n",
      "                         ..Mxrfh.  ,b       '&      ..WMMM.^rW    .*WjIM:   ...#xrxxxxxxxxxxxxxxxxxxxo'       \n",
      "                        !'8xu8'.      Li'    .^*.  `\"8bdddoo`M.    WW#WW.    .`Jonxxxrxxxxxxxxxxxxxxrxq'      \n",
      "                         (fUwY..        '&       .^pp,..'bkbb&@       .     ._,.  . avfxxxxxxxxxxxxxxrnM      \n",
      "                         kL.  '..\\8\".     .l^    '8bkt''+bbbbpL;c'         \"Z.       ..!0nxrxxxxxxxxxxrn\".    \n",
      "                        \"clic'   .'#..^%)'       .,pkbbbkbkbbo`   .~h@B&\\ .             .^Mnxxxxxxxxxrxrd.    \n",
      "                       l_a&`        ^            ..`;8ddbpbB.``                           '`oxxxxxxxxxxx&.    \n",
      "                        .&_   ....!u*&O1            .%\"'  .         ppppdbbbbkkkkkkhhhaaao>'.onxrxxxxxxxW     \n",
      "                         W8.                       .w.                                        &rxxxxxxrno.    \n",
      "                         f'#'.                     .!               . _d%c^''..               .Uxxxxxrxr!.    \n",
      "                         .&':\\                     8                       .'.   \"z$q~. `>    .&rxxxxxn#'     \n",
      "                           {  ^* '                '^                ''%[..             m.  .   &xxxxxxn       \n",
      "                           `{  ..`_b             .q                    '..'Jm        uI`      .#rxxxxjY.      \n",
      "                            .q..     . #(.'.     .o                           .. #Uu`         {xrxrrxi        \n",
      "                            ''*.         ..'<&Y ..(                         ^(@!'.. .'.l    .~rxxxro'..       \n",
      "                               `p                  ''}O&%kLr{[?[(nmoB#c;''                . 0rxxxnv`'         \n",
      "                            ''ocddh..                                                     .*jrnn*'`           \n",
      "                           .brxxzkbdo<..                                               .`*rxruw               \n",
      "                         . Xrxpxtjr&bbpkB.                                            .*xxxa `  .             \n",
      "                          hxxvxnx&.. ^cWdkkdWk..                                  .'kxnx#`   .                \n",
      "                         . vrkxo...      `&):l;tWpa8C,.   .                      &rnLk^^                      \n",
      "           z&#*BC`^.      ''*nW        'bhm!IixM<iodbkbdkbddk#W&hv]>;\"'`^:l}X8&#kpbhQxw`..                    \n",
      "       >_''       .'W.    '.oh''aW\"    Ul;MdkI;tdI!%''^j#&hbdbbbbbbkbbbbbbddk#WQxxxrrrxC..                    \n",
      "    '.h              ^Cnrxxxv%..M  'W'''*IlM:IIIIIM'       .  .0rrxxrrrxxrrxrrrxxxxxxxxjW                     \n",
      "    .#.                ,krxxn#'.8    .`'*1}&|]x&?`.            'Irrrxxxxxxxxxxxxxxxxxxxxrw                    \n",
      "     I                   ^xrrri. +          ..x8bl.. .         ..Wxxrxxxxxxxxxxxxxxxxxxxrk                    \n",
      "     i                   ''urxn_.^#                  .   ..`;;J '#nxrxxxxxxbxrxxxxxxxxxjnxi                   \n",
      "    .8.                  .'LrrrxM`'>r..          '~ZM&*U:'..'& .`mxxxxxxxrxxbxxrxxxxxxxxrrk                   \n",
      "    ..)                     bjxrxjO[`.cX    '?L`'.       '' W'`wunxxxxxxxxrxxdxxxxxxxxxjxr&                   \n",
      "      .i.                   &xrxxxrxxxqb``^M.                 'CxxxxxxxxxxxxrWpLrjxxxxxxrnB.Y('               \n",
      "      ' o                  .orrrxxxxrxxxxrJ.                   .Ynxxxxxxxxxrnhbbp#nxxxxxwU..  t               \n",
      "         `c^.             .Yrxxrxxxxxxxrn&                      .lujrxxxxrxxM8*&h.. ..        .X              \n",
      "           'd;           `*aWhOQd#oCxxxrxj                        axrxxxxrxo    8             b               \n",
      "              .'r8U_~|&w.             `]#Z                        .qrxxrxn/.    'q,`.     ''d^                \n",
      "                                         q                        .*rxxnL .       .^ ,YO1 `.                  \n",
      "                                          &.                      .Ufa'..                                     \n",
      "                                          '8'                   ..MZ`'                                        \n",
      "                                            ^*\"                `_^.                                           \n",
      "                                             ..]0``        . I#'                                              \n",
      "                                                    .  .                                                      \n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "show_heigth = 50\n",
    "show_width = 110\n",
    "#这两个数字是调出来的\n",
    "\n",
    "ascii_char = list(\n",
    "    \"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'. \")\n",
    "#生成一个ascii字符列表\n",
    "char_len = len(ascii_char)\n",
    "\n",
    "pic = plt.imread(\"jiqimao.jpeg\")\n",
    "#使用plt.imread方法来读取图像，对于彩图，返回size = heigth*width*3的图像\n",
    "#matplotlib 中色彩排列是R G B\n",
    "#opencv的cv2中色彩排列是B G R\n",
    "\n",
    "pic_heigth, pic_width, _ = pic.shape\n",
    "#获取图像的高、宽\n",
    "\n",
    "gray = 0.2126 * pic[:, :, 0] + 0.7152 * pic[:, :, 1] + 0.0722 * pic[:, :, 2]\n",
    "#RGB转灰度图的公式 gray = 0.2126 * r + 0.7152 * g + 0.0722 * b\n",
    "\n",
    "#思路就是根据灰度值，映射到相应的ascii_char\n",
    "for i in range(show_heigth):\n",
    "    #根据比例映射到对应的像素\n",
    "    y = int(i * pic_heigth / show_heigth)\n",
    "    text = \"\"\n",
    "    for j in range(show_width):\n",
    "        x = int(j * pic_width / show_width)\n",
    "        text += ascii_char[int(gray[y][x] / 256 * char_len)]\n",
    "    print(text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ! pip install -i http源\n",
    "新版ubuntu要求使用https源，要注意。\n",
    "\n",
    "清华：https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "\n",
    "阿里云：https://mirrors.aliyun.com/pypi/simple/\n",
    "\n",
    "中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/\n",
    "\n",
    "华中理工大学：https://pypi.hustunique.com/\n",
    "\n",
    "山东理工大学：https://pypi.sdutlinux.org/ \n",
    "\n",
    "豆瓣：https://pypi.douban.com/simple/\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.8"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
